package com.algorithm.lesson_05;

public interface DogCatQueue {

	/**
	 * 将 cat 类或 dog 类的实例放入队列中
	 * 
	 * @param pet
	 */
	void add(Pet pet);

	/**
	 * 将队列中所有的实例按照进队列的先后顺序依次弹出
	 * 
	 * @return
	 */
	Pet pollAll();

	/**
	 * 将队列中 dog 类的实例按照进队列的先后顺序依次弹出
	 * 
	 * @return
	 */
	Dog pollDog();

	/**
	 * 将队列中 cat 类的实例按照进队列的先后顺序依次弹出
	 * 
	 * @return
	 */
	Cat pollCat();

	/**
	 * 检查队列中是否有Dog或Cat类的实例
	 * 
	 * @return
	 */
	boolean isEmpty();

	/**
	 * 检查队列中是否有Dog类的实例
	 * 
	 * @return
	 */
	boolean isDogEmpty();

	/**
	 * 检查队列中是否有Cat类的实例
	 * 
	 * @return
	 */
	boolean isCatEmpty();
}
